package experiment1_bag;

public class bety_experiment {
    public static void main(String[] args) {
        byte b1 = 3;
        byte b2 = 4;
//        byte b3 = b1 + b2;
        byte b4 = 3 + 4;
//        byte b5 = 120 + 20;
        short s=1;
//        s = s+1;//观察是否有语法错误并分析原因。然后注释掉改行
        //	s+=1;//注释掉上一行代码后，再把本行代码的注释去掉后执行。
    }
}
//（1）byte b3 = b1 + b2;和byte b4 = 3 + 4;的区别
//byte b3 = b1 + b2;：此语句会产生编译错误。在 Java 里，当进行算术运算时，
// 像b1和b2这样的byte类型变量会自动提升为int类型。所以b1 + b2的结果是int类型，
// 而b3是byte类型，把int类型的值赋给byte类型的变量，需要进行显式的强制类型转换。
// byte b4 = 3 + 4;：这语句不会产生编译错误。由于3和4属于常量，在编译时，编
// 译器就会算出3 + 4的结果为7，并且会检查这个结果是否在byte类型的取值范围（-128 到 127）之内。
// 因为7处于这个范围，所以能够直接把结果赋给byte类型的变量b4。
//（2）s = s+1;与s+=1;的区别
//s = s+1;：此语句会产生编译错误。s为short类型，在进行s + 1运算时，s会自动提升为int类型，
// s + 1的结果也是int类型。把int类型的值赋给short类型的变量s，需要进行显式的强制类型转换。
//s+=1;：这语句不会产生编译错误。+=属于复合赋值运算符，在 Java 里，复合赋值运算符会自动进行类型转换。
// s += 1 等同于 s = (short)(s + 1)，所以它能把结果正确地赋给s。
